while 迴圈概論
1.for 迴圈用於知道需要執行的次數,而while迴圈常用於不知道確切執行次數的情境下。透過每次判斷是否符合條件,若符合則進入迴圈。
2.每次執行完都要更新條件避免進入無窮迴圈,無法跳出迴圈。
while 條件:
程式執行區塊
更新條件
透過迴圈來累加 1-10 的數字:
#for 迴圈:
total = 0
for num in range(0,11):
total += num
print(total)
#55
#while迴圈:
num = 1
result = 0
while num <= 10:
result += num
#當 num 小於等於 10 時會進到迴圈裡面執行,若不符合則離開迴圈。
#代表result = result + num
num += 1
#此為更新條件,num每次都以級數累加直到10,若缺乏條件則result會不斷加總1。
print(result)
練習:while 迴圈數字累加器
設計一個程式可以讓使用者輸入希望從多少數字開始累加到多少數字(三個使用者
輸入變數,一個為起始值,一個為結束值,一個為間隔值),然後使用 while 迴圈
印出累加結果(含結束值)。舉例:使用者輸入 0、10 和 1 代表從 0 累加到 10,間隔為 1,結果應該為 55。
start_num = int(input("Enter the start number: "))
end_num = int(input("Enter the end number: "))
interval_num = int(input("Enter the interval number: "))
result =0
while start_num <= end_num:
result += start_num
start_num += interval_num
print(result, start_num)
print(result)
無窮迴圈
當條件永遠成立時會進到無窮迴圈(有可能是忘記更新條件,要小心使用),會持續執行程式區塊,有些情況會造成電腦程式當機。while 後面若條件一直是 True 代表會一直進入區塊中無法跳出,一般不建議使用,建議 while 區塊內需要明確定義更新條件避免無窮迴圈一直執行到電腦資源耗盡。
若要避免無窮迴圈記得加上 break 跳出條件,例如:counter 變成 10 後跳出迴圈。
counter = 0
while True:
counter += 1
print(counter)
if counter >= 10:
break
# 10
print(counter)
break關鍵字使用
當我們想要在迴圈某時跳出迴圈或是略過某次迴圈時可以分別搭配 if...else
使用 break
和 continue
關鍵字來控制何時忽略或是跳出迴圈:
result = 0
for i in range(6):
#迭代變數i遍歷迭代列表[0,6]
if i == 3:
# 迭代變數i到3時停止迴圈
break
result += i
print(result)
#3
練習:加強版迴圈數字累加器(break)
設計一個程式可以讓使用者輸入希望從多少數字開始累加到多少數字(三個使用者輸入變數,一個為起始值,一個為結束值,一個為跳出值),然後使用 for 迴圈印出累加結果(含結束值)。舉例:使用者輸入 0 和 10 以及 6 代表從 0 累加到 10,但遇到 6 則跳出,結果應該為 15。
start_num = int(input("Enter the start number: "))
end_num = int(input("Enter the end number: "))
break_num = int(input("Enter the break number: "))
result =0
for i in range(start_num, end_num+1):
if i == break_num:
break
result += i
print(result)
continue 關鍵字使用
continue 代表跳過這次迴圈運算,直接到下一次迴圈:
#跳過3
for i in range(6):
if i == 3:
continue
print(i)
result += i
# 印出累加結果
print(result)
練習:加強版迴圈數字累加器(continue)
請設計一個程式可以讓使用輸入希望從多少數字開始累加到多少數字(三個使用者輸入變數,一個為起始值,一個為結束值,一個為忽略值),然後使用 for 迴圈印出累加結果(含結束值)。舉例:使用者輸入 0 和 10 以及 1 代表從 0 累加到 10,但遇到 1 則跳過,結果應該為 54。
start_num = int(input("Enter the start number: "))
end_num = int(input("Enter the end number: "))
continue_num = int(input("Enter the continue number: "))
result =0
for i in range(start_num, end_num+1):
if i == continue_num:
continue
result += i
print(result)
練習:印出婚宴參加名單人數
你的好朋友即將結婚,身為工程師的你負責統計出席名單。請使用 for 迴圈計算出席的人數。
invite_list = {
'Jack': True,
'Leo': True,
'Mike': False,
'Jane': False,
'Andy': True,
'Ben': False
}
invited_num = 0
for key,value in invite_list.items():
if value == True:
invited_num += 1
print(key,value)...顯示true的key & value
print(invited_num)...顯示true的總人數
#顯示true的key & value,並顯示true的總人數